home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga News 95
/
Amiga News 95.iso
/
dpat
/
dpat80
/
aive
/
aive.docf
< prev
next >
Wrap
Text File
|
1994-09-11
|
16KB
|
376 lines
Amiga Image ViewEr
version 1.7f
Septembre 1994
Rôle : Afficher des images en 256 couleurs sur un Amiga de base .
------
Le but de ce programme est de permettre à une personne ne disposant pas
d'une machine très puissante (type A500) de visualiser des images GIF et IFF
comportant 256 couleurs dans n'importe laquelle des résolutions supportées
par l'Amiga de base. Théoriquement, une image de 1024x1024 par 256 couleurs
peut être affichée avec seulement 512 Ko de chip.
Copyright :
-----------
AIVE est (c) 1994 Laurent Vivier . Il ne peut être vendu dans un but
commercial sans mon autorisation écrite . Tout distribution ne peut exiger
plus de 15FF de frais . Plus généralement, je n'autorise personne à
distribuer ce logiciel dans un but lucratif sans mon autorisation écrite .
Ce logiciel ne peut être distribué séparé de sa documentations . Les
fichiers "AIVE","AIVE.docF" ne peuvent donc être séparés .
Ce logiciel est "Freeware", vous pouvez me contacter pour demander de
l'aide ou poser des questions, des suggestions.
Avertissement :
---------------
Je décline toute responsabilité quant à l'utilisation de ce logiciel .
Toute utilisation se fait à vos risques et périls .
Contact :
---------
Adresse postale :
Laurent Vivier
Avenue Général De Gaulle
38380 Saint Laurent du Pont
FRANCE
Adresse électronique : Sans (à mon grand regret)
Formats Supportés : GIF87a,GIF89a (entrelacé ou non), IFF (sauf HAM).
-------------------
The Graphic Interchange Format(c) is the Copyright property of
CompuServe Incorporated. GIF(sm) is a Service Mark property of
CompuServe Incorporated.
Utilisation :
-------------
AIVE peut être appelé à partir du CLI (ou Shell) ou du Workbench.
Paramètres supportés depuis le CLI :
------------------------------------
Le nom du fichier ainsi que les options d'affichage se font par passage
des paramètres depuis la ligne de commande.
Les paramètres supportés sont affichés si on lance AIVE sans paramètres !
AIVE name [hire|lore|ehb][nolace][grey|gray][scale][color #colors]
[width w][heighth][ratio a/b]
[dither none|fs1|fs2]
[smooth none|gs1|gs2]
HIRE,LORE,EHB : spécifie le mode graphique à utiliser
HIRE : haute résolution
LORE : basse résolution
EHB : Extra-Half-Bright
Le mode d'affichage par défaut est HAM .
NOLACE : par défaut l'affichage se fait en mode entrelacé, cette option
l'inhibe .
GREY : affiche l'image en niveau de gris (16 couleurs, HIRE)
COLOR n : permet d'indiquer le nombre de couleurs a utiliser (>= 8,
par défaut le maximum) . Conjugué avec GREY, indique le nombre
de niveaux de gris .
SCALE : l'image est automatiquement réduite pour rentrer entièrement dans
l'écran
WIDTH w : w est la largeur maximale de l'image
HEIGHT h : h est la hauteur maximale de l'image
RATIO a/b : rapport de déformation de l'écran .
Soit x et y, respectivement la largeur et la hauteur d'un
point élémentaire de l'écran, alors : y = x * (a/b)
par défaut : a/b = 1/2 en LORE (HAM,EHB)
= 1/1 en LORE et NOLACE
= 1/1 en HIRE
= 2/1 en HIRE et NOLACE
Je suis bien conscient que ces coefficients ne sont pas
réalistes (si on se réfère aux spécifications du format IFF,
les bonnes valeurs sont 5/11, 10/11, 20/11) . Mais ceux-ci
pouvant varier d'un écran à l'autre en fonction des réglages,
de la fréquence (NTSC/PAL), d'une image à l'autre, toute autre
valeur ne pourrait être que spécifique à MON écran . Alors, à
vous de faire le boulot (une méthode consiste à dessiner un
rectangle à l'écran, même nombre de points hauteur/largeur, de
prendre un décimètre pour mesurer ses côtes sur l'écran, et de
faire le rapport)
DITHER NONE : pas de dithering (propagation de l'erreur)
FS1 : dithering unidirectionne, l'erreur est propagée uniquement sur
la ligne.
FS2 : dithering bidirectionnel, l'erreur est propagée sur la ligne
sur les colonnes (option par défaut)
La méthode utilisée est celle de Floyd-Steinberg.
SMOOTH NONE : pas de smoothing (lissage) (option par défaut)
GS1 : le filtre utilisé est un filtre gaussien à 1 dimension
GS2 : le filtre utilisé est un filtre gaussien à 2 dimensions
Note :
Il m'a semblé utile de rajouter le smoothing parce que certains images
qui ont déja subi un dithering (conversion du JPEG vers le GIF) ressortent
très mal en mode HAM. Avec le smoothing, j'essaye d'annuler le dithering
précédent. De plus, le smoothing à 2 dimensions permet d'éliminer quelque
peu l'effet de clignotement en mode entrelacé.
Exemple :
On veut afficher l'image cindy.gif (800x600) dans un écran de taille
standard, un utilisant le dithering bidirectionnel et le smooting à 2
dimensions.
aive cindy.gif scale smooth GS2
On notera que le smoothing bidirectionnel et le mode HAM sont valides par
défaut.
La même image, mais sur un écran 100x100, sans smoothing ou dithering, avec
un rapport de déformation de 5/11 (en basse résolution) :
aive cindy.gif lore dithering none ratio 5/11 width 100 height 100
Tool types depuis le Workbench :
--------------------------------
Pour démarrer AIVE depuis le Workbench, il faut sélectionner son icône
(inversion des couleurs), puis appuyer sur shift en double-cliquant sur
l'icône de l'image à afficher.
Les tool types donnent les options à aive depuis le Workbench, comme
les paramètres depuis le CLI.
Les tool types se trouvent dans l'icône des fichiers. On peut modifier
les tool types d'un fichier en sélectionnant son icône avec la souris puis
en choisissant "Information" (Amiga-Gauche I) dans le menu du workbench
"Icons". On ajoute des tool types avec "New", on en supprime avec "Del".
Lorsque l'on lance AIVE, il lit tout d'abord les tool types de son icône,
puis ceux de l'icône de l'image sélectionnée. Par conséquent, les tool types
de l'image son plus prioritaires que ceux stockés dans l'icône de AIVE.
Les tool types pris en compte sont :
MODE=HAM pour sélectionner le mode HAM
MODE=HIRE la haute résolution
MODE=LORE la basse résolution
MODE=EHB le mode Extra-Half-Bright
COLOR=n où "n" est le nombre de couleurs à utiliser (ou niveau de
gris)
INTERLACED=YES pour sélectionner le mode entrelacé
INTERLACED=NO sinon
GREY=YES pour sélectionner l'affichage en niveau de gris
(GRAY et GREY sont synonymes)
GREY=NO sinon
SCALE=YES l'image est autmatiquement diminuer pour rester dans l'écran
SCALE=NO sinon
WIDTH=w où "w" est la largeur maximum de l'écran
HEIGHT=h où "h" est la hauteur maximum de l'écran
RATIO=a/b où a/b est le coefficient de déformation
DITHER=NONE pour inhiber le dithering
DITHER=FS1 pour sélectionner le dithering unidimensionnel
DITHER=FS2 pour sélectionner le dithering bidimensionnel
SMOOTH=NONE pour inhiber le smoothing
SMOOTH=GS1 pour sélectionner le smoothing unidirectionnel
SMOOTH=GS2 pour sélectionner le smoothing bidirectionnel
Les valeurs par défauts sont : MODE=HAM, INTERLACED=YES, SCALE=NO, GREY=NO,
DITHER=FS2, SMOOTH=NONE. WIDTH, HEIGHT, RATIO, et COLOR ont les valeurs
standard inhérentes au mode d'écran sélectionnée.
Note : On peu insérer des espaces entre les mots et "=".
Exemple :
Si les tool types de AIVE sont : MODE=HAM, GREY=NO, INTERLACED=YES
et les tool types de l'image sont : MODE=HIRE, GREY=YES, RATIO=10/11
Les tool types utilisé seront : MODE=HIRE, GREY=YES, INTERLACED=YES,
RATIO=10/11, DITHER=FS2, SMOOTH=NONE.
Interface :
-----------
Après lancement, une fenêtre s'ouvre . On y trouve le nom de l'image en
cours de chargement, son type (GIF87a, GIF89a, IFF ...), ses dimensions,
ainsi qu'une barre reflétant la progression du décodage . Un bouton "Stop"
permet d'arrèter la lecture, et de quitter le programme . Le recourci
clavier est la touche "ESC" sélectionnée. On peut échanger les écrans avec
[Amiga-Gauche m], on peut faire apparaitre l'écran Workbench en premier
plan avec [Amiga-Gauche n]. L'action de cliquer sur l'image à pour effet de
ramener l'écran du workbench au premier plan et de rendre active la fenêtre
d'information concernant l'image.
A noter : Sous OS2.0, il est possible d'afficher des images plus grandes
que l'écran; rien de spéciale n'a été fait pour les parcourir, la seule
solution existante est celle donnée par le système, c'est-à-dire presser
la touche Amiga-Gauche en même temps que le bouton gauche de la souris,
et déplacer la souris pour déplacer l'image .
Sous OS1.3, ce problème ne se rencontre pas : il est impossible d'ouvrir
un écran plus grand, l'image est mise à l'échelle dans une taille standard
(PAL ou NTSC) .
techniques Utilisées :
----------------------
Toutes les images subissent un dithering de type Floyd-Steinberg, qui
consiste en une propagation de l'erreur aux points voisins . Il peut être
unidirectionnel ou bidirectionnel. Dans le premier cas, la totalité de
l'erreur est reportée au point suivant, dans le deuxième l'erreur est
répartie entre le point suivant et ses voisins de la ligne suivante.
L'affichage en niveau de gris, qui je pense est ce que l'on peut faire
de mieux sur un Amiga avec le chip set de base, utilise les coefficients de
luminosité de la Commision Internationale de l'Eclairage (CIE), c'est-à-dire
que chaque composante est pondérée par une valeur proche de la sensibilite de
l'oeil, lors du calcul de la moyenne donnant l'intensité du niveau de gris .
La recherche de la couleur la plus proche se fait en se projetant dans
l'espace tridimensionel raporté aux composantes . Cela reviens à calculer
la distance la plus courte dans cet espace . Cet espace est dilaté par les
coefficients cités précédemment .
L'extraction de la palette de couleurs se fait gràce à une méthode
personnelle qui consiste à agglomérer les couleurs en ilots de proximité dans
l'espace . On découpe l'espace en un nombre de sous-espaces, ce nombre est
le nombre de couleurs désirées . La valeur de la couleur associée au
sous-espace est le barycentre des couleurs de la palette d'origine contenu
dans ce sous-espace .
L'affichage a été accéléré par rapport à la version 1.0 en stockant les
calculs au fur et à mesure de l'affichage (utilise une vingtaine de Ko en
plus)
La mise à l'échelle se fait gràce à une routine en assembleur n'utilisant
aucun nombre en virgule flottante . La technique employée peut s'apparenter
aux techniques utilisées pour faire de l'anti-aliasing.
Le smoothing se fait en faisant un convolution entre :
- pour le cas à une dimension, la matrice comprenant les points de la
ligne et la matrice gaussienne [1 2 1].
- pour le cas à deux dimensions, la matrice comprenant 3 lignes, la
ligne du milieu étant la ligne courante et la matrice : +- -+
| 1 2 1 |
| 2 4 2 |
| 1 2 1 |
+- -+
Compatibilité :
---------------
Ce soft a commencé à être développer sous Kickstart 1.2, Workbench 1.3 .
Lors de sa diffusion, son développement se faisait sous 2.0, il devrait donc
fonctionner sous tous les systèmes . Il a été rapidement testé sous 2.0 avec
émulateur kickstart 1.3, à première vue il ne parait pas y avoir de
problèmes .
Il se peut qu'il y ait des problèmes sur des machines comportant des
cartes graphiques : je n'utilise pas la fonction WritePixel de la
graphics.lib pour écrire à l'écran, mais écris directement en mémoire, dans
un but de rapidité .
Toutes l'activité de test s'est faite sur mon A500 :
carte mère rev 5a, OS2.0, 2 drives DDDS, 512 FAST, 512 CHIP .
AIVE fonctionne sur A1200, mais n'exploite pas les mode AGA
(mais est beaucoup plus rapide et permet de visualiser des images
en 1024x768 grâce à l'option de redimmensionnement)
bogues connus :
---------------
- l'option scale ne marche pas correctement avec les GIF entrelacés.
- le smoothing n'est pas implanté pour l'affichage en niveau de gris
- quelque fois, on peut voir apparaitre des points parasites sur le coté
gauche
- quelque soit le nombre de couleurs affichées, le nombre de plans
utilisés est toujours le maximum (4 en haute-résolution, 5 en basse)
Remerciements :
---------------
Frédéric Elisei Archimediste génial, qui a fourni de l'eau a mon moulin
Franck Lyonnet idem
Voyez leurs viewers JPEG sur Acorn Archimede 5000,
qui tourne plus vite que n'importe quels viewers GIF
sur Amiga (500 !) .
Roger Wilson pour un article sur son soft ChangeFSI
Steven A. Bennet auteur d'un décodeur GIF dont je me suis inspiré
Cindy Crowford pour sa plastique superbe (motivante !)
UFR Informatique qui m'a permis de découvrir le réseau internet, et donc
et mathématiques l'accès a un nombre important d'informations
appliquées de (Merci aux administrateurs système)
Grenoble
Injures :
-----------
Mes Profs Que je maudits sur quinze générations pour m'avoir
de DESS G.I. donné du travail supplémentaire pendant les vacances de
l'été 1994
Historique :
------------
Janvier 1994 version 1.0 première distribution
Janvier 1994 version 1.2 correction de 2 lègers bugs :
- plantage sur des images de largeur impaire
- légère correction du dithering pour éviter
un effet de saturation .
Mars 1994 version 1.5 correction d'autres bugs :
- impossibilité d'afficher en grey avec low
resolution .
- impossibilité de faire un dégradé de gris
avec moins de 16 niveaux .
Evolution :
- Accélération du dithering (un gain de 2 ou 3)
- mise en place des routines de changement
de taille de l'image
Avril 1994 version 1.7 Correction de bugs :
- permettre l'affichage d'images IFF
comportant moins de 256 couleurs.
- détection des images IFF qui ne sont pas
compressées par ligne mais sur la
totalité de l'image (ce sont généralement
des fichier ".pic", AIVE ne peut pas les
afficher)
Evolution :
- optimisation du chargeur IFF
- permettre le démarrage depuis le workbench
- possibilité de désactiver le dithering
- ajout du dithering 1D
- smoothing
Septembre version 1.7f Evolution :
1994 - l'interface est modifiée pour afficher les
messages d'erreurs en français et dans un
requester système si le programme est lancé
depuis le workbench.
- le fait de cliquer sur l'image fait basculer
vers le workbench.
Auteur : Laurent Vivier
--------
Que la force soit avec Amiga...